package leetcode_700;

/**
 *@author 周杨
 *SetMismatch_645 一个数组里有一个元素重复了 并覆盖了另外一个元素 请找出两者
 *describe:用置下标为负数的方法 AC 59%
 *2018年9月25日 上午11:07:32
 */
public class SetMismatch_645 {
	public int[] findErrorNums(int[] nums) {
		int dup=0;
		int sum=0;
        for(int i=0;i<nums.length;++i) {
        	int abs=Math.abs(nums[i]);
            sum+=abs;
        	if(nums[abs-1]<0) {
        		dup=abs;
        	}
        	else
        		nums[abs-1]*=-1;
        }
        int miss=(1+nums.length)*nums.length/2-sum+dup;
        return new int[] {dup,miss};
    }
}
